#include <stdio.h>
#include <string.h>

// 结构体的声明
/*
结构体的关键字 struct

struct 结构体名
{

};

*/
// 声明结构体
struct str
{
    char name[128];  // 名字
    char sex[128];     // 性别
    int age;         // 年龄
    int id;          // 学号
    int sco;         // 成绩
};

int main(int argc, char const *argv[])
{
    // 结构体初始化   按照成员 进行赋值
    struct str zhangsan = {
        .name = "张三" , .age = 18 , .id = 1 , .sco = 59 , .sex = "沃尔玛塑料袋"
    };
    // 结构体的访问
    printf("名字:%s 性别:%s 年龄:%d 学号:%d 成绩:%d\n" , 
        zhangsan.name , zhangsan.sex , zhangsan.age , zhangsan.id , zhangsan.sco
    );
    // 结构体初始化  按照顺序 进行赋值
    struct str lisi = {
        "李四" , "武装直升机" , 18 , 2 , 59
    };
    printf("名字:%s 性别:%s 年龄:%d 学号:%d 成绩:%d\n" , 
        lisi.name , lisi.sex , lisi.age , lisi.id , lisi.sco
    );

    // 直接进行赋值
    lisi.id = 3;
    lisi.age = 18;
    lisi.sco = 50;
        // 当对 字符串数组 赋值的时候 不能使用 赋值符号 需要使用strcpy
    strcpy(lisi.name , "王五");
    strcpy(lisi.sex , "男");
    printf("名字:%s 性别:%s 年龄:%d 学号:%d 成绩:%d\n" , 
        lisi.name , lisi.sex , lisi.age , lisi.id , lisi.sco
    );
    struct str s1 = 
    {
        s1.age = 18 , s1.id = 1 , s1.sco = 59 , strcpy(s1.name , "张三") ,strcpy(s1.sex , "男")
    };
    // s1.name 数组  ->  不可修改指向的 指针
    

    return 0;
}

